
#include "Socket_Serveur.h"
#include"Socket_Client.h"
Socket_Serveur::Socket_Serveur (char* machine,int port,int nbMacAttente)
{
  cout << "		Trace : Création de la Socket Serveur... "<<endl;
  struct sockaddr_in adr;
  adr.sin_family      = PF_INET;
  adr.sin_port        = htons (port);
  adr.sin_addr.s_addr = INADDR_ANY;
  idSocket = socket (PF_INET, SOCK_STREAM, 0);
  if (idSocket < 0)
    {
      cout<<"		Erreur : Impossible de créer la socket Serveur!!!"<<endl;
    }
  else 
    {
      if (bind (idSocket, (struct sockaddr *) &adr, sizeof(struct sockaddr)) < 0)
	{
	  idSocket = -1;
	  cout<<"		Erreur : Erreur de BIND!!!"<<endl;
	}
      else 
	{ 
	  if (listen (idSocket, 1) < 0) 
	    { 
	      idSocket = -1;
	      cout<<"		Erreur : Erreur de LISTEN!!!"<<endl;
	    }
	  else
	    {
	      cout << "		Trace : La socket Serveur a été créer avec succées..." << endl;
	    }
	} 
    }
}

const Socket_Client& Socket_Serveur::Accepte()
{
  Socket_Client* socketClient = NULL;
  if (idSocket != -1)
    {
      struct sockaddr_in adresseDuClient; 
      int longueurDeAdresseDuClient  = sizeof (adresseDuClient);
      int idSocketCliente = accept (idSocket, (struct sockaddr *) &adresseDuClient, (socklen_t*) &longueurDeAdresseDuClient);
      socketClient = new Socket_Client (idSocketCliente);
    }
  else 
    {
      cout<<"		Erreur : Le descripteur de la socket est invalide!!!"<<endl;
    } 
  return  *socketClient;
}


